package com.monkeyk.sos.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.commons.codec.binary.Base64;

/**
 * 日期工具类
 * 
 * @author yinhaiquan
 *
 */
public class DateFormatTool {

	public static String yyyyMMdd = "yyyy-MM-dd HH:mm:ss";
	public static String yyyyMMdd_split_ = "yyyyMMddHHmmss";
	public static String yyyyMMdd_s_ = "HHmmss";
	/**
	 * 获取当前日期
	 * 日期格式：yyyy-MM-dd HH:mm:ss
	 * 
	 * @return
	 */
	public static String getDate(){
	try {
		return new SimpleDateFormat(yyyyMMdd).format(new Date());
	} catch (Exception e) {
	}
		return null;
	}
	
	/**
	 * 日期转换字符串
	 * 
	 * @param type    日期类型
	 * @param date    日期
	 * @return
	 */
	public static String DateToString(String type,Date date){
		try {
			return new SimpleDateFormat(type).format(date);
		} catch (Exception e) {
			return null;
		}
	}
	
	/**
	 * 字符串转换日期
	 * 
	 * @param type  日期类型
	 * @param date  日期字符串
	 * @return
	 */
	public static Date StringToDate(String type,String date){
		try {
			return new SimpleDateFormat(type).parse(date);
		} catch (Exception e) {
			return null;
		}
	}
	
	/**
	 * 比较两个日期大小
	 * 返回1则日期1大于或等于日期2
	 * 返回0则日期1小于日期2
	 * 返回-1则数据格式错误
	 * 
	 * @param date1    日期1(String/Date)
	 * @param date2    日期2(String/Date)
	 * @return
	 */
	public static int DateToDate(Object date1,Object date2){
		Date date_1 = null;
		Date date_2 = null;
		if(date1 instanceof String){
			date_1 = StringToDate(DateFormatTool.yyyyMMdd, (String)date1);
		}else if(date1 instanceof Date){
			date_1 = (Date) date1;
		}else{
			return -1;
		}
		if(date2 instanceof String){
			date_2 = StringToDate(DateFormatTool.yyyyMMdd, (String)date2);
		}else if(date2 instanceof Date){
			date_2 = (Date) date2;
		}else{
			return -1;
		}
		if ((date_1.getTime()-date_2.getTime())>=0) {
			return 1;
		}else{
			return 0;
		}
	}
	
	/**
	 * 日期添加天数得到新日期
	 *  
	 * @param date   日期
	 * @param days   天数
	 * @return String
	 */
	public static Date addDays(Date date,int days){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_YEAR, days);
		return calendar.getTime();
	}
	
	/**
	 * 日期添加年数得到新日期
	 *  
	 * @param date   日期
	 * @param years   年数
	 * @return String
	 */
	public static Date addYears(Date date,int years){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.YEAR, years);
		return calendar.getTime();
	}
	
	
	/**
	 * 今天yyyy-MM-dd
	 * @return 今天date
	 */
	public static String getTodays() {
		SimpleDateFormat  sf = new SimpleDateFormat("yyyy-MM-dd");
		return sf.format(new Date());
	}
	/**
	 * 连个时间的差值秒
	 */
	public static int getMis(Date time1,Date time2) {
		Long d2 = time2.getTime();
		Long d1 = time1.getTime();
		int mis = (int) (d2 - d1)/1000;
		return mis;
	}
	
	
	
	public static void main(String[] args) {
		System.out.println(new Base64().encodeToString("000000".getBytes()));
	}
}
